import { getAssetLoaderTypes } from "XrFrame/loader/AssetLoader"

// pages/p_purchasecar/index.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
     itemtype:['商品','套装'],
     itemtype_value:"商品",
     itemsearchtag:'',
     itemlist:[],
     itemlist_userdefinedoc:[],
     selectUserdefine:[],
     selectVendor:[],
     //默认展开三级分类
     category_list1:[],
     category_list2:[],
     category_list3:[],
     //套装目录。如果类别是套装，则分类下显示套装名称
     materialgroup_list:[],
     material_quantity:[],//录入商品数量后，临时保存
  },

  /**
   * 生命周期函数--监听页面加载===============================================================
   */
  onLoad() {
  //  默认按1级物料ID取初始化数------------
  var that=this;
  var level=1;
  var v=1;
   //调用搜索链接------
   wx.request({
     url:'http://localhost:8081/basis_api/miniprogram/getcommoninfo',
     method:'POST',
     data:{
       x_id:1,
       source:'get_materialbycategory',
       tdata:{
         type:that.data.itemtype_value=="商品"?'material':'material_group',
         category_id:v,
       }
     },
     header:{'content-type':'application/json'},
     success(res){
       // 注意：按类别搜索时返回三个结果集：下级类别+物料明细+自定义档案
       //1下级分类
       console.log(res.data);
       var p=res.data.data[0];
       var temp:any[]=[];
       console.log('读取的下级类别');
       console.log(p);
       console.log(p.length);
       if(p!=undefined&&p.length>0)
          temp=p.map((item:any)=>
            ({category_id:item.id,category_name:item.name})
          );
        if(level==1)  
            that.setData({category_list1:temp });
        else if(level==2)
            that.setData({category_list2:temp });
        else if(level==3)
            that.setData({category_list3:temp });
       console.log('类别商品下级');
       console.log(temp);
      //  var p=res.data.data[0];
       var temp:any[]=[];
       console.log('读取的下级类别');
       console.log(p);
       //2商品明细
       var p2=res.data.data[1];
       var temp2:any[]=[];
       for(let i=0;i<p2.length;i++)
           temp2.push({ 
                       id:p2[i].id,
                       code:p2[i].code,
                       name:p2[i].name,
                       invstd:p2[i].invstd,
                       invstd2:p2[i].invstd2,
                       munit_name:p2[i].munit_name,
                       userdefine:JSON.parse(p2[i].userdefine),
                       vendor:JSON.parse(p2[i].vendor),
                       addition:p2[i].addition=='null'?[]:JSON.parse(p2[i].addition),
                      //  userdefine_doc:p2[i].doc==null?[]:JSON.parse(p2[i].doc),
                     });
        if(temp2.length!=0)
                that.setData({
                     itemlist:temp2,
                  });
         //  3自定义档案
      //     var p3=res.data.data[2];
      //     var temp3:any[]=[];
      //     for(let i=0;i<p3.length;i++)
      //     temp3.push({ 
      //                 userdefine_id:p3[i].userdefine_id,
      //                 userdefine_name:p3[i].userdefine_name,
      //                 doc:JSON.parse(p3[i].doc),
      //               });
      //  if(temp3.length!=0)
      //          that.setData({
      //               itemlist_userdefinedoc:temp3,
      //            });
      //    console.log('获取的自定义档案');        
      //    console.log(temp3);
     },
   })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
// 函数定义--------------------------------2025-02-24------------------------------------------------
// 选择商品类型2025-02-24
onSelectType:function(e: any){
  // 重置各变量
  var that=this;
  that.setData({
    category_list1:[],
    category_list2:[],
    category_list3:[],
    selectVendor:[],
    itemlist:[],
    itemlist_userdefinedoc:[],
    selectUserdefine:[],
    itemsearchtag:'',
    materialgroup_list:[],
  });
  // 获取参数
  var i=e.detail.value;
  var temp=this.data.itemtype[i];
  that.setData({
      itemtype_value:temp,
  });
  console.log('您选择类型为：'+temp);
  // 按选择的类别，选取第一级分类：0商品，1套装
  //  默认按1级类别取初始化数---第1级目录---------
  
  var level=1;
  var v=0;//为0则指代第一级目录，否则为实际的分类ID
   //调用搜索链接------
   wx.request({
     url:'http://localhost:8081/basis_api/miniprogram/getcommoninfo',
     method:'POST',
     data:{
       x_id:1,
       source:'get_materialbycategory',
       tdata:{
         type:that.data.itemtype_value=="商品"?'material':'material_group',
         category_id:v,
       }
     },
     header:{'content-type':'application/json'},
     success(res){
       // 注意：按类别搜索时返回三个结果集：下级类别+物料明细+自定义档案
       //1下级分类
       console.log(res.data);
       var p=res.data.data[0];
       var temp:any[]=[];
       console.log('读取的下级类别');
       console.log(p);
       console.log(p.length);
       if(p!=undefined&&p.length>0)
          temp=p.map((item:any)=>
            ({category_id:item.id,category_name:item.name})
          );
          //下级类别复位
        that.setData({category_list1:temp });
        that.setData({category_list2:[]});
        that.setData({category_list3:[]});
       console.log('类别商品/套装下级');
       console.log(temp);
      //  var p=res.data.data[0];
       var temp:any[]=[];
       console.log('读取的下级类别');
       console.log(p);
       //2商品明细--如一级为套装，则不显示商品明细/只有在选择套装名称后，才显示商品明细
       if(that.data.itemtype_value=='商品'){
       var p2=res.data.data[1];
       var temp2:any[]=[];
       for(let i=0;i<p2.length;i++)
           temp2.push({ 
                       id:p2[i].id,
                       code:p2[i].code,
                       name:p2[i].name,
                       invstd:p2[i].invstd,
                       invstd2:p2[i].invstd2,
                       munit_name:p2[i].munit_name,
                       userdefine:JSON.parse(p2[i].userdefine),
                       vendor:JSON.parse(p2[i].vendor),
                       addition:p2[i].addition=='null'?[]:JSON.parse(p2[i].addition),
                      //  userdefine_doc:p2[i].doc==null?[]:JSON.parse(p2[i].doc),
                     });
        if(temp2.length!=0)
                that.setData({
                     itemlist:temp2,
                  });
         //  3自定义档案
      //     var p3=res.data.data[2];
      //     var temp3:any[]=[];
      //     for(let i=0;i<p3.length;i++)
      //     temp3.push({ 
      //                 userdefine_id:p3[i].userdefine_id,
      //                 userdefine_name:p3[i].userdefine_name,
      //                 doc:JSON.parse(p3[i].doc),
      //               });
      //  if(temp3.length!=0)
      //          that.setData({
      //               itemlist_userdefinedoc:temp3,
      //            });
      //    console.log('获取的自定义档案');        
      //    console.log(temp3);
        };//显示商品明细结束---当为套装时，不显示
     },
   })

},

// 搜索商品关键字2025-0-24---------------------------------------------------------------------------------
searchItem:async function(e:any){
  // 重置各变量
  var that=this;
  that.setData({
    // category_list1:[],
    category_list2:[],
    category_list3:[],
    selectVendor:[],
    itemlist:[],
    itemlist_userdefinedoc:[],
    selectUserdefine:[],
    // itemsearchtag:'',
    materialgroup_list:[],
  });
  // var value=e.detail.value;
  var value=that.data.itemsearchtag;
  console.log("搜索关键字："+value);
  that.setData({
    itemsearchtag:value==undefined?'':value,
  });
  wx.showToast({
    title:value,
  });
  
  console.log(that.data.itemtype_value=="商品"?'material':'material_group');
  console.log(that.data.itemsearchtag);
  //调用搜索链接
    wx.request({
    url:'http://localhost:8081/basis_api/miniprogram/getcommoninfo',
    method:'POST',
    data:{
      x_id:1,
      source:'get_materialbytag',
      tdata:{
        type:that.data.itemtype_value=="商品"?'material':'material_group',
        materialtag:that.data.itemsearchtag,
      }
    },
    header:{'content-type':'application/json'},
    success(res){
      console.log('搜索商品');
      console.log(res.data);
      var p=res.data.data[0];
      var temp:any[]=[];
      for(let i=0;i<p.length;i++)
          temp.push({ 
                      id:p[i].id,
                      code:p[i].code,
                      name:p[i].name,
                      invstd:p[i].invstd,
                      invstd2:p[i].invstd2,
                      munit_name:p[i].munit_name,
                      userdefine:JSON.parse(p[i].userdefine),
                      vendor:JSON.parse(p[i].vendor),
                      addition:p[i].addition=='null'?[]:JSON.parse(p[i].addition),
                      // userdefine_doc:p2[i].doc==null?[]:JSON.parse(p2[i].doc),
                    });
       if(temp.length!=0)
               that.setData({
                    itemlist:temp,
                 });
        //  自定义档案
      //    var p2=res.data.data[1];
      //    var temp2:any[]=[];
      //    for(let i=0;i<p2.length;i++)
      //    temp2.push({ 
      //                userdefine_id:p2[i].userdefine_id,
      //                userdefine_name:p2[i].userdefine_name,
      //                doc:JSON.parse(p2[i].doc),
      //              });
      // if(temp2.length!=0)
      //         that.setData({
      //              itemlist_userdefinedoc:temp2,
      //           });
      //   console.log('获取的自定义档案');        
      //   console.log(temp2);
        }
  });
    // console.log(that.data.itemlist) ;
},
//录入搜索框时更新搜索值-----------------------------------------
inputItem:function(e:any){
  var value=e.detail.value;
  // var old=this.data.itemsearchtag;
  console.log(value);
  this.setData({
    itemsearchtag:value,
  });
},

// 商品列表加入采购车---------------------------------------------
item2car:function(){
// 将选择的物料，和供应商信息综合，并提交保存
var that=this;
 var m=this.data.material_quantity;
 var v=this.data.selectVendor;
 var m2=[];
 var t2=[];
 m2=m.map((item:any)=>{
       var t=item;
       t2=[];
       v.map((item2:any)=>{
          if(item.mid==item2.mid)
            t2=item2.vendor;
      });
      return {...t,
          vendor:t2,  
        };
    });
console.log('加入采购车数据');
 console.log(m2);
that.setData({
   material_quantity:m2,
});
//  远程调用进行更新
wx.request({
  url:'http://localhost:8081/basis_api/miniprogram/updatecommoninfo',
  method:'POST',
  data:{
    x_id:1,
    operater_id:1,
    type:1,//1为新增，0为修改，3为其他
    source:'add_purchase_car',
    tdata:that.data.material_quantity,
  },
  header:{'content-type':'application/json'},
  success(res:any){
    // 注意：按类别搜索时返回三个结果集：下级类别+物料明细+自定义档案
    //1下级分类
    console.log(res);
    if(res.data.success==true||res.success=='true') 
       wx.showToast({
         title:'成功加入采购车',
       });
    else
      wx.showToast({
        title:'加入采购车失败',
      });
  },
});
},

// 转到采购车-------------------------------------------------------
gotoPurchaseCar:function(){
  // wx.showToast({
  //   title:'转到采购车'
  // });
  wx.navigateTo({
    url:'../../pages/p_purchasecar_doing/index',
  });
  console.log('转到采购车');
},

// 自定义组件变化时，更新至数据源---自定义项--------------------------------
setUserdefine:function(e:any){
  var v=e.detail.value;
  var mid=e.target.dataset.mid;
  var uid=e.target.dataset.uid;
  var s=this.data.selectUserdefine;
  var f=s.filter((item:any)=>!(item.mid==mid&&item.uid==uid));
  console.log('去重复后数据');
  console.log(f);
   f.push({mid,uid,v});
  console.log('新数据');
  console.log(f);
  this.setData({
    selectUserdefine:f,
  });
},
// 当选择供应商时，更新-----------------------------
setVendor:function(e:any){
  var v=e.detail.value;
  console.log(v);
  var mid=e.target.dataset.mid;
  var s=this.data.selectVendor;
  var f=s.filter((item:any)=>item.mid!=mid);
  f.push({mid,vendor:v});
  this.setData({
    selectVendor:f,
  });
  console.log('选择的供应商ID');
  console.log(this.data.selectVendor);
},
// 按类别筛选下级类别-----------------------2025-02-26---------------------------------------------
getCategory:function(e:any){
  var that=this;
   var level=1;
   level=e.target.dataset.level;
   var v=e.target.dataset.category_id;
    //调用搜索链接------
    wx.request({
      url:'http://localhost:8081/basis_api/miniprogram/getcommoninfo',
      method:'POST',
      data:{
        x_id:1,
        source:'get_materialbycategory',
        tdata:{
          type:that.data.itemtype_value=="商品"?'material':'material_group',
          category_id:v,
        }
      },
      header:{'content-type':'application/json'},
      success(res){
        // 注意：按类别搜索时返回三个结果集：下级类别+物料明细+自定义档案
        //1下级分类
        console.log(res.data);
        var p=res.data.data[0];
        var temp:any[]=[];
        console.log('读取的下级类别');
        console.log(p);
        if(p!=undefined&&p.length>0)
           temp=p.map((item:any)=>
             ({category_id:item.id,category_name:item.name})
           );
         if(level==1)  
             that.setData({
               category_list1:temp,
               category_list2:[],
               category_list3:[],
               materialgroup_list:[],
               itemlist:[],
              });
         else if(level==2)
             that.setData({
               category_list2:temp ,
               category_list3:[],
               materialgroup_list:[],
               itemlist:[],
              });
         else if(level==3)
             that.setData({
               category_list3:temp,
               materialgroup_list:[],
               itemlist:[],
               });
        console.log('类别商品下级');
        console.log(temp);var p=res.data.data[0];
        var temp:any[]=[];
        console.log('读取的下级类别');
        console.log(p);
        //2商品明细-----开始
        if(that.data.itemtype_value=='商品'){
        var p2=res.data.data[1];
        var temp2:any[]=[];
        for(let i=0;i<p2.length;i++)
            temp2.push({ 
                        id:p2[i].id,
                        code:p2[i].code,
                        name:p2[i].name,
                        invstd:p2[i].invstd,
                        invstd2:p2[i].invstd2,
                        munit_name:p2[i].munit_name,
                        userdefine:JSON.parse(p2[i].userdefine),
                        vendor:JSON.parse(p2[i].vendor),
                        addition:p2[i].addition=='null'?[]:JSON.parse(p2[i].addition),
                        // userdefine_doc:p2[i].doc==null?[]:JSON.parse(p2[i].doc),
                      });
         if(temp2.length!=0)
                 that.setData({
                      itemlist:temp2,
                   });
          //  3自定义档案
        //    var p3=res.data.data[2];
        //    var temp3:any[]=[];
        //    for(let i=0;i<p3.length;i++)
        //    temp3.push({ 
        //                userdefine_id:p3[i].userdefine_id,
        //                userdefine_name:p3[i].userdefine_name,
        //                doc:JSON.parse(p3[i].doc),
        //              });
        // if(temp3.length!=0)
        //         that.setData({
        //              itemlist_userdefinedoc:temp3,
        //           });
        //   console.log('获取的自定义档案');        
        //   console.log(temp3);
          };
          //商品明细-----结束
          //套装列表-----开始
          if(that.data.itemtype_value=='套装'){
          var pt=res.data.data[1];
          var tempt:any[]=[];
          for(let i=0;i<pt.length;i++)
          tempt.push({ 
                     group_id:pt[i].group_id,
                      group_name:pt[i].group_name,
                      });
       if(tempt.length!=0)
               that.setData({
                    materialgroup_list:tempt,
                 });
         console.log('获取的套装明细');        
         console.log(tempt);
                };
          //套装列表----结束
      },
    })
} ,
// getMaterialGroup按物料组ID获取物料明细-------------------------------------
getMaterialGroup:function(e:any){
    var that=this;
    // 重置各变量
  var that=this;
  that.setData({
    // category_list1:[],
    // category_list2:[],
    // category_list3:[],
    selectVendor:[],
    itemlist:[],
    itemlist_userdefinedoc:[],
    selectUserdefine:[],
    itemsearchtag:'',
    // materialgroup_list:[],
  });
    var group_id=e.target.dataset.group_id;
    // 按物料组ID, 获取物料明细
    wx.request({
      url:'http://localhost:8081/basis_api/miniprogram/getcommoninfo',
      method:'POST',
      data:{
        x_id:1,
        source:'get_materialgroupdetail',
        tdata:{
          group_id,
        }
      },
      header:{'content-type':'application/json'},
      success(res){
        // 注意：按类别搜索时返回2个结果集：物料明细+自定义档案
        //1商品明细-----开始
       var p2=res.data.data[0];
        var temp2:any[]=[];
        for(let i=0;i<p2.length;i++)
            temp2.push({ 
                        id:p2[i].id,
                        code:p2[i].code,
                        name:p2[i].name,
                        invstd:p2[i].invstd,
                        invstd2:p2[i].invstd2,
                        munit_name:p2[i].munit_name,
                        userdefine:JSON.parse(p2[i].userdefine),
                        vendor:JSON.parse(p2[i].vendor),
                        addition:p2[i].addition=='null'?[]:JSON.parse(p2[i].addition),
                        // userdefine_doc:p2[i].doc==null?[]:JSON.parse(p2[i].doc),
                      });
         if(temp2.length!=0)
                 that.setData({
                      itemlist:temp2,
                   });
          // 2自定义档案
        //    var p3=res.data.data[1];
        //    var temp3:any[]=[];
        //    for(let i=0;i<p3.length;i++)
        //    temp3.push({ 
        //                userdefine_id:p3[i].userdefine_id,
        //                userdefine_name:p3[i].userdefine_name,
        //                doc:JSON.parse(p3[i].doc),
        //              });
        // if(temp3.length!=0)
        //         that.setData({
        //              itemlist_userdefinedoc:temp3,
        //           });
        //   console.log('获取的自定义档案');        
        //   console.log(temp3);
      },
    });
},

// 录入数量时，更新待添加数量--2025-03-04----------------------------------------------------------------
// 此处有个BUG：只有更新数据时才会更新选择物料数据；但数据更新后再更新属性，无法体现出来
setQuantity:function(e:any){
  var v=e.detail.value;
  var mid=e.target.dataset.mid;
  var tdata=this.data.material_quantity;
  //获取物料的自定义项值
  var userdefine=this.data.selectUserdefine.filter((item:any)=>item.mid==mid);
  var temp=[];
  if(tdata.filter((item:any)=>item.mid!=mid)!=undefined)
       temp=tdata.filter((item:any)=>item.mid!=mid);
  temp.push({mid,quantity:v,userdefine});
  this.setData({
    material_quantity:temp,
  }); 
  console.log(this.data.material_quantity);
}




})